package Previo;

/**/
import java.net.*;
import java.io.*;

public class Cliente extends Thread{
	
	private Socket socket;
	private ObjectOutputStream output;
	private ObjectInputStream input;
	final String ADDRESS = "127.0.0.1";
	final int PORT = 7900;
	
	public void crearSocket(){
		try {
			this.socket= new Socket(this.ADDRESS, this.PORT);
			System.out.println("CREE EL SOCKET");
			this.output= new ObjectOutputStream (this.socket.getOutputStream());
			System.out.println("CREE EL OUTPUT");
			this.input= new ObjectInputStream(this.socket.getInputStream());
			System.out.println("CREE EL INPUT");
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
		
	public void enviarConectar(){
		Requerimiento r = new Requerimiento ();
		r.setTipo(Requerimiento.CONECTAR);
		r.setDato("Soy cliente nuevo");
		try {
			output.writeObject(r);
			System.out.println("ENVIO LA PETICION DE CONECTAR");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public Object [] recibirProcedures (){
		try {
			Respuesta resp = (Respuesta) input.readObject();
			Object proc []= resp.getTitulos();
			return proc;
			/*
			ArrayList <String> proc= new ArrayList<String> ();
			for (int i=0; i<resp.getTitulos().length; i++){
				proc= resp.getTitulos().get
			}*/
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch bloc
			e.printStackTrace();
			return null;
		}
		
	}
	
	public void enviarRequerimiento (String Procedure, String zona, String categoria){
		Requerimiento r = new Requerimiento ();
		r.setDato(Procedure);
		r.setTipo(Requerimiento.REQUERIR);
		System.out.println("ACA MUESTRO LA ZONA OBTENIDA EN EL RADIO BUTTON");
		System.out.println(zona);
		System.out.println("ACA MUESTRO LA CATEGORIA OBTENIDA EN EL RADIO BUTTON");
		System.out.println(categoria);
		int zonaInt = Integer.parseInt(zona);
		int categoriaInt = Integer.parseInt(categoria);
		int [] arreglo = new int [2];
		arreglo [0] = zonaInt;
		arreglo [1] = categoriaInt;
		r.setArgumentos(arreglo);
		try {
			System.out.println("ESTOY MANDANDO LA PETICION PARA DATOS EN TABLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
			output.writeObject(r);
			System.out.println(r.getTipo());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public Respuesta   recibirRequerimiento(){
		try {
			Respuesta resp = (Respuesta) input.readObject();
		//	Object [] tit= resp.getTitulos();
		//	Object [][] datos = resp.getDatos();
			return resp;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	
	
	public Object [][]  recibirDatos(){
		try {
			Respuesta resp = (Respuesta) input.readObject();
			Object [][] datos= resp.getDatos();
			System.out.println("Dato de la Tabla 2,2: "+resp.getDatos()[2][2]);
			return datos;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	
	public void enviarDesconectar (){
		Requerimiento r = new Requerimiento ();
		r.setTipo(Requerimiento.DESCONECTAR);
		r.setDato("Me desconecto");
		try {
			output.writeObject(r);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
    	new VentanaCli(new Cliente()).setVisible(true);
   }


}
